﻿Imports LomaVerde.DataAccess
Imports LomaVerde.Model
Imports LomaVerde.Utils

Class frmLocalidadSearchEdit


    Const Col_idLocalidad As Integer = 1

    Dim _Localidad As Localidad
    Dim ListaLocalidades As List(Of Localidad)

    Dim EditandoRegistro As Boolean = True
    Dim _Operacion As Operacion

    Dim _LocalidadRepository As LocalidadRepository

    Private Sub frmLocalidadSearchEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'ocultar el panel con el detalle

        AsignarColores()

        OcultarPanelDatos()

        _LocalidadRepository = New LocalidadRepository()

        CargarGrilla()

        CargarImagenes()
    End Sub
    Private Sub frmSocioEdit_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Select Case e.KeyCode
            Case Keys.Enter
                SendKeys.Send("{TAB}")
            Case Keys.Escape
                'si se esta editando un registro preguntar si se quiere salir
                If MsgBox("¿ Cancelar la edición ?", MsgBoxStyle.YesNo, "Cancelar") = MsgBoxResult.Yes Then
                    Me.Close() 'cerrar el formulario
                End If
        End Select
    End Sub
    'asignar los colores a los controles
    Private Sub AsignarColores()
        'colores del titulo
        picHeaderBackground.BackColor = Utils.Colores.Common_LabelHeader_BackColor
        picHeader.BackColor = Utils.Colores.Common_LabelHeader_BackColor

        lblHeader.ForeColor = Utils.Colores.Common_LabelHeader_ForeColor
        lblHeader.BackColor = Utils.Colores.Common_LabelHeader_BackColor
        'colores del toolstrip
        ts.BackColor = Utils.Colores.Common_ToolStrip_BackColor
        tsbNuevo.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbEditar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbEliminar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbSeleccionar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        tsbCerrar.ForeColor = Utils.Colores.Common_ToolStripItem_ForeColor
        'colores de la grilla
        gridListado.Styles.Fixed.BackColor = Utils.Colores.Common_Grid_Fixed_Backcolor
        gridListado.Styles.Fixed.ForeColor = Utils.Colores.Common_Grid_Fixed_ForeColor
        gridListado.Styles.Alternate.BackColor = Utils.Colores.Common_Grid_Alternate_Backcolor

    End Sub
    Sub CargarImagenes()
        picHeader.Image = My.Resources.Localidades_32.ToBitmap()
        Icon = My.Resources.Localidades_16
    End Sub
    Private Sub Nuevo()
        MostrarPanelDatos()
        _Operacion = Operacion.Add
    End Sub

    Private Sub Editar()

        _Operacion = Operacion.Edit

        _Localidad = FilaGrillaSeleccionada()

        txtNombre.Text = _Localidad.Nombre

        MostrarPanelDatos()

    End Sub

    Private Sub CargarGrilla()
        ListaLocalidades = _LocalidadRepository.GetItems()

        LimpiarGrilla()
        'si hay registros => cargar la grilla
        If ListaLocalidades.Count > 0 Then
            'para cada elemento en la lista, agregar en la grilla
            gridListado.BeginUpdate()
            For Each _Localidad_loop In ListaLocalidades

                gridListado.AddItem(_Localidad_loop.Nombre & vbTab & _
                                    _Localidad_loop.IdLocalidad)
            Next
            gridListado.EndUpdate()
        End If

    End Sub

    Private Sub Guardar()

        If String.IsNullOrEmpty(txtNombre.Text) Then
            MsgBox("El nombre de la Localidad es Obligatorio")
            Return
        End If

        If _Operacion = Operacion.Add Then
            _Localidad = New Localidad()
        End If

        With _Localidad
            .Nombre = _txtNombre.Text
        End With

        Try
            _LocalidadRepository.Save(_Localidad)
            CargarGrilla()
            LimparControles()
        Catch ex As Exception
            MsgBox("Se Produjo un error al Guardar la Localidad")
        End Try

    End Sub

    private Sub Eliminar()

        _Localidad = FilaGrillaSeleccionada()

        If IsNothing(_Localidad) Then
            MsgBox("Seleccione una Localidad para Eliminar")
            Return
        End If

        If (MsgBox("¿Desea Eliminar la Localidad " + _Localidad.Nombre + "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes) Then
            _LocalidadRepository.Delete(_Localidad)
        End If

        CargarGrilla()

    End Sub
    'devuelve un string con la columna ID del registro seleccionado
    Private Function FilaGrillaSeleccionada() As Localidad

        Dim loc As Localidad
        'si no hay fila seleccionada => salir
        If gridListado.Row <= 0 Then
            Return Nothing
        End If
        'obtener el ID
        Dim id As Integer = gridListado(gridListado.Row, Col_idLocalidad)
        'si es vacio => salir
        If id = 0 Then
            Return Nothing
        End If
        'si hay un valor => devolver el string con el ID
        loc = _LocalidadRepository.GetItem(id)
        Return loc
    End Function


  
    'limpiar la grilla
    Private Sub LimpiarGrilla()
        'limpiar la grilla
        gridListado.Rows.Count = 1
    End Sub

    Private Sub LimparControles()

        txtNombre.Text = String.Empty
    End Sub
    'mostrar el panel con los controles para edicion de la entidad
    Private Sub MostrarPanelDatos()
        'mostrar el panel de datos
        panelDatos.Visible = True
        'ocultar el panel con la grilla
        panelGrilla.Enabled = False

    End Sub

    'ocultar el panel con los controles para edicion de la entidad
    Private Sub OcultarPanelDatos()
        'ocultar el panel de datos
        panelDatos.Visible = False
        'mostrar el panel con la grilla
        panelGrilla.Enabled = True

    End Sub


    Private Sub tsbNuevo_Click(sender As Object, e As EventArgs) Handles tsbNuevo.Click
        Nuevo()
    End Sub

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        OcultarPanelDatos()
    End Sub

    Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
        Guardar()
    End Sub

    Private Sub tsbEditar_Click(sender As Object, e As EventArgs) Handles tsbEditar.Click
        Editar()
    End Sub

    Private Sub tsbEliminar_Click(sender As Object, e As EventArgs) Handles tsbEliminar.Click
        Eliminar()
    End Sub
End Class